﻿#ifndef FILECOPYWORKER_H
#define FILECOPYWORKER_H

/*******************************************************************************
** 文件拷贝工人，为此线程编写代码时，可以认为此线程是在单线程的环境下执行的。
** 因为FileCopyCtrl会加锁。
**
*******************************************************************************/

#include <QObject>
#include <QSharedPointer>

class FileCopyWorker : public QObject
{
    Q_OBJECT
public:
    // 状态
    enum State
    {
        STATE_NOTSTART = 0, // 未启动
        STATE_BUSY, // 繁忙
        STATE_IDLE, // 空闲
        STATE_USER = 255 // 用户自定义
    };

    // 拷贝任务参数
    struct CopyTask
    {
        QString src_filepath; // 源文件路径
        QString dest_filepath; // 目的文件路径
    };

    explicit FileCopyWorker(QObject *parent = nullptr);

    // 获取当前状态
    int state();

    // 停止当前执行
    void stopCurrent();

public slots:
    // 执行一个任务
    void slotDoOneTask(QSharedPointer<FileCopyWorker::CopyTask> task);

signals:
    // 执行进度
    void sigProgress(int);

private:
    // 状态
    int m_state;
};

#endif // FILECOPYWORKER_H
